//=====================================================================
//
//=====================================================================
#ifndef PRISM_SEMANTIC_ANALYSIS_HPP
#define PRISM_SEMANTIC_ANALYSIS_HPP
//=====================================================================
#include <sooty/frontend/syntactic_analysis/parseme.hpp>
#include <prism/frontend/semantic_analysis/semantic_info.hpp>
//=====================================================================
namespace prism {
//=====================================================================
	
	sooty::parseme_ptr find_identifier_definition(sooty::const_parseme_ptr_ref start, sooty::const_parseme_ptr_ref N);
	
	
	
	void convert_to_ssa(sooty::parseme_ptr_ref);
	void setup_semantic_information(sooty::parseme_ptr_ref);
	
	//=====================================================================
	//
	//
	//
	//
	//
	//=====================================================================
	namespace semantic_analysis
	{
		void module(sooty::parseme_ptr_ref);
		void function(const semantic_info&, sooty::parseme_ptr_ref);
	}
	
//=====================================================================
} // namespace prism
//=====================================================================
#endif
//=====================================================================
